package org.todo.service;

import java.util.List;
import org.todo.controller.SearchCommand;
import org.todo.dao.TodoDao;
import org.todo.domain.Todo;

/**
 * Implementation of TodoService interface
 * @author Matthias Braunhofer
 */
public class TodoServiceImpl implements TodoService {
    //injected dependency
    private TodoDao todoDao;

    public List<Todo> getTodos(int categoryId) {
        return todoDao.findTodosForCategory(categoryId);
    }

    public List<Todo> getTodos(String username) {
        return todoDao.findTodosForUser(username);
    }

    public Todo getTodo(int todoId) {
        return todoDao.getTodo(todoId);
    }

    public void addTodo(Todo todo) {
        todoDao.saveTodo(todo);
    }

    public void deleteTodo(int todoId) {
        Todo todo = getTodo(todoId);
        todoDao.deleteTodo(todo);
    }

    public void setTodoDao(TodoDao todoDao) {
        this.todoDao = todoDao;
    }

    public List<Todo> searchTodos(String username, SearchCommand searchCommand) {
        return todoDao.searchTodos(username, searchCommand.getSearchText());
    }
}
